package com.gem.day12;

import java.util.*;
import java.util.Map.Entry;

/**
 * 本类用来演示Java Map集合
 * 
 * 特点:
 * 双列	键值对	键无序不可重复,值可以重复
 * 
 * @author easonsy
 * 2020年8月3日 上午10:43:43
 */
public class HashMapDemo {
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<>();

		//添加元素
		map.put(2, "two");
		map.put(1, "one");
		//注意:如果添加的元素键和之前相同,则后者覆盖前者!
		map.put(1, "one-again");
		map.put(3, "three");
		map.put(4, "four");
		map.put(5, "four");

		//遍历
		System.out.println(map);

		/*
		 * 1.keySet
		 * 把当前map中所有的key放入到一个集合中,遍历该集合即可得到map中所有的key,
		 * 根据key获取value
		 */
		Set<Integer> keySet = map.keySet();
		Iterator<Integer> iterator = keySet.iterator();
		while (iterator.hasNext()) {
			Integer key = iterator.next();
			String value = map.get(key);//根据key获取value
			System.out.println(key + "-" + value);
		}

		/*
		 * 2.entrySet
		 * 把当前map中所有的key-value键值对封装成Entry的对象,
		 * 然后利用Entry对象的内置方法来获取键和值
		 */
		Set<Entry<Integer, String>> entrySet = map.entrySet();
		Iterator<Entry<Integer, String>> iterator2 = entrySet.iterator();
		while (iterator2.hasNext()) {
			Entry<Integer, String> entry = iterator2.next();
			Integer key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key + "-" + value);
		}
	}
}
